﻿Imports sonicERPDAL
Imports sonicERPinfo
Imports System.Data.SqlTypes
Imports System.Net
Imports System.Net.Dns


Partial Public Class CadastroUsuario
    Inherits Paginabase


    Dim entidade As New UsuarioInfo
    Dim util As New Util
    Dim lista As New List(Of String)
#Region "Sub e Funçoes"
    Public Sub getnivel()

        entidade.dtinicio = SqlDateTime.MinValue
        entidade.dt_fim = SqlDateTime.MaxValue
        entidade.nivel = Convert.ToString(DBNull.Value)
        ddlnivel.DataSource = dal.nivelusuario.lista(entidade)
        ddlnivel.DataValueField = "id"
        ddlnivel.DataTextField = "Nivel"
        ddlnivel.DataBind()
        ddlnivel.Items.Insert(0, "Selecione")

    End Sub

    Public Sub gravar()

        Try
            pnl1.Visible = False

           

      

            If String.IsNullOrEmpty(txtnome.Text) Then
                txtnome.Focus()
                Throw New Exception("Digite o Nome do usuario")
            ElseIf ddlnivel.SelectedIndex = 0 Then
                ddlnivel.Focus()
                Throw New Exception("Selecione o nivel do Usuario")
            ElseIf String.IsNullOrEmpty(txtemail.Text) Then
                txtemail.Focus()
                Throw New Exception("Digite o Email do Usuario")

            ElseIf String.IsNullOrEmpty(txtApelido.Text) Then
                txtApelido.Focus()
                Throw New Exception("Digite o Login do Usuario")
            ElseIf String.IsNullOrEmpty(txtsenha.Text) Then
                txtsenha.Focus()
                Throw New Exception("Digite o Senha do Usuario")
            ElseIf validaremail(txtemail.Text) = False Then
                txtemail.Focus()
                Throw New Exception("Email Invalido")
            End If

            txtnome.Text = txtnome.Text.Trim.ToUpper
            txtApelido.Text = txtApelido.Text.Trim.ToUpper
            txtemail.Text = txtemail.Text.Trim.ToUpper
            txtsenha.Text = txtsenha.Text.Trim.ToUpper
            entidade.idnivel = ddlnivel.SelectedItem.Value
            util.getusuarios(lista)
            entidade.idusuario = Convert.ToInt32(lista.Item(0).ToString())


            entidade.nome = txtnome.Text
            entidade.email = txtemail.Text
            entidade.apelido = txtApelido.Text
            entidade.senha = txtsenha.Text
            entidade.dt_cadastro = Now
            entidade.ip = ip()
            dal.usuario.insert(entidade)
            Throw New Exception("Cadastro Efetuado Com Sucesso")
            limpar()
        Catch ex As Exception
            pnl1.Visible = True
            lblerro.Text = ex.Message
        End Try
    End Sub
    Public Function ip()
        Dim ip_ As String = String.Empty
        Dim h As IPHostEntry = GetHostEntry(GetHostName)
        If h.AddressList.Length = 4 Then
            ip_ = CType(h.AddressList.GetValue(2), IPAddress).ToString()
        End If
        If String.IsNullOrEmpty(ip_) Then
            ip_ = String.Empty

        End If
        Return ip_

    End Function

    ''Método que valida o Email
       
    Public Function validaremail(ByVal email As String) As Boolean
        Return System.Text.RegularExpressions.Regex.IsMatch(email, ("(?<user>[^@]+)@(?<host>.+)"))
    End Function

    Public Sub limpar()
        txtApelido.Text = ""
        txtemail.Text = ""
        txtnome.Text = ""
        txtsenha.Text = ""
        ddlnivel.SelectedIndex = 0

    End Sub
#End Region

#Region "Eventos do Form"
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
           
            Dim paginavisivel As Boolean
            paginavisivel = util.validarpagina(4)
            If Not paginavisivel Then
                FormsAuthentication.SignOut()
                Response.Redirect(ResolveUrl("~/Login.aspx"))
            End If
            getnivel()

        End If

    End Sub

    Protected Sub imggravar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imggravar.Click
        gravar()

    End Sub
#End Region

End Class